/**
 * 
 */
package domain;

import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EObject;

/**
 * @model
 *
 */
public interface Entity extends EObject {
	
	public static final int PROJECT_ENTITY_KIND = 0;
	public static final int PACKAGE_ENTITY_KIND = 1;
	public static final int CLASS_ENTITY_KIND = 2;
	public static final int METHOD_ENTITY_KIND = 3;
	
	/**
	 * @model
	 * @return
	 */
	public String getFullQualifiedName();

	/**
	 * Sets the value of the '{@link domain.Entity#getFullQualifiedName <em>Full Qualified Name</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Full Qualified Name</em>' attribute.
	 * @see #getFullQualifiedName()
	 * @generated
	 */
	void setFullQualifiedName(String value);

	/**
	 * @model
	 * @return
	 */
	public Integer getKind();

	/**
	 * Sets the value of the '{@link domain.Entity#getKind <em>Kind</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Kind</em>' attribute.
	 * @see #getKind()
	 * @generated
	 */
	void setKind(Integer value);
	
	/**
	 * @model
	 */
	public String getContainerName();
	
	/**
	 * Sets the value of the '{@link domain.Entity#getContainerName <em>Container Name</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Container Name</em>' attribute.
	 * @see #getContainerName()
	 * @generated
	 */
	void setContainerName(String value);

	/**
	 * @model
	 */
	public String getLocation();
	
	/**
	 * Sets the value of the '{@link domain.Entity#getLocation <em>Location</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Location</em>' attribute.
	 * @see #getLocation()
	 * @generated
	 */
	void setLocation(String value);
	
	/**
	 * @model
	 */
	public Entity getParent();

	/**
	 * Sets the value of the '{@link domain.Entity#getParent <em>Parent</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Parent</em>' reference.
	 * @see #getParent()
	 * @generated
	 */
	void setParent(Entity value);

	/**
	 * @model
	 */
	public String getName();
	
	/**
	 * Sets the value of the '{@link domain.Entity#getName <em>Name</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Name</em>' attribute.
	 * @see #getName()
	 * @generated
	 */
	void setName(String value);

	/**
	 * @model containment="true"
	 * @return
	 */
	public EList<Entity> getEntity();
	
	/**
	 * @model containment="true"
	 * @return
	 */
	public EList<Metric> getMetric();
	
	/**
	 * @model
	 * @return
	 */
	public Integer getRevisionNumber();

	/**
	 * Sets the value of the '{@link domain.Entity#getRevisionNumber <em>Revision Number</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Revision Number</em>' attribute.
	 * @see #getRevisionNumber()
	 * @generated
	 */
	void setRevisionNumber(Integer value);
	
}	
	
	
